【运维】Linux如何解决root用户Operation not permitted

您所在的位置:网站首页 debian 普通用户拥有root权限 【运维】Linux如何解决root用户Operation not permitted

【运维】Linux如何解决root用户Operation not permitted

2023-09-04 22:04| 来源: 网络整理| 查看: 265

在linux中,root用户是可以做任何的事情,但是当使用一些命令时仍然会出现类似于“Chmod: changing permissions of 'xxx ': Operation not permitted”这样的提示语,如下图所示:

出现这种情况的原因:与该文件(目录)特有的属性是相关的,即文件(目录)属性就是定义为不能被修改的。

对此我们可先用lsattr命令查看文件的属性:lsattr 文件名

如果我们想查看一个目录的权限,可使用:lsattr -d 目录名命令

在linux下,有些配置文件是不允许任何人包括root修改的,为了防止被误删除或修改,可以设定该文件的"不可修改位(immutable)",即文件属性为i。从上面可以看出当前文件有个i属性,有i属性的文件是不能修改的,更不可被删除,即使是root用户也不可。

既然知道了文件不能操作的原因是加了i属性,所以相应的解决方案就是把文件的i属性去除,然后对此文件内容进行修改,最好在操作完成后恢复文件的i属性。

去除i属性命令:其中对于文件名,既可以是相对路径,也可以是绝对路径

chattr -i 文件名

添加i属性命令:

chattr +i 文件名

  扩展:在解决了个人问题之后,另外还有必要了解一下lsattr和chattr的其它语法命令.

  语法:lsattr 选项 文件名

  选项:

     -a 显示所有文件和目录

     -d 若目标是目录,仅列出目录本身的属性,而不是子文件的

  chattr的全称为change attribute 作用:改变文件属性

  语法:chattr [-RV][-v][+/-/=] [文件或目录名]

  参数:

           -R  递归处理,将指定目录下的所有文件及子目录一并处理。            -v  设置文件或目录版本。            -V  显示指令执行过程。            +  开启文件或目录的该项属性。            -   关闭文件或目录的该项属性。            =  指定文件或目录的该项属性。

  补充说明:这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

           a:如果对文件设置a属性,那么只能在文件中增加数据(只能采用输出重定向方式来增加数据,不能使用vi命令来增加数据),但是不能删除和修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除文件(当设定 a 之后,这个目录将只能增加数据,而不能删除,只有 root 才能设定这个属性)            b:不更新文件或目录的最后存取时间。            c:将文件或目录压缩后存放。            d:将文件或目录排除在倾倒操作之外。             i:如果对文件设置i属性,那么不允许对文件进行删除、改名、也不能对文件添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许新建、删除和重命名文件。            s:保密性删除文件或目录。            S:即时更新文件或目录。            u:预防以外删除。

其他说明:

chattr是用来更改文件属性,lsattr可用来查看文件的属性,执行命令lsattr /etc/sysctl.conff便可以看到当前文件的属性;

可以发现当前文件有个i属性,查阅命令帮助文档可以看到有i属性的文件是不能修改的,更不可被删除,即使是root用户也不可。

Application/Student/View# lsattr /Application/Spc/View/Login Application/Student/View# chattr -i /Application/Student/View/Login/index.html

应用举例:

1、用chattr命令防止系统中某个关键文件被修改:

# chattr +i /etc/resolv.conf

然后用mv /etc/resolv.conf等命令操作于该文件,都是得到Operation not permitted 的结果。vim编辑该文件时会提示W10: Warning: Changing a readonly file错误。要想修改此文件就要把i属性去掉: chattr -i /etc/resolv.conf

# lsattr /etc/resolv.conf

会显示如下属性

----i-------- /etc/resolv.conf

2、让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:

# chattr +a /var/log/messages



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3